package cn.tedu.search.entity; 
 /*
 @Time: 2022/12/23 18:18
 @Author:GShuai
 @File:Item.class
 @Software:IntelliJ IDEA
*/

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

/*
 * 实体类
 * */
@Data
@Accessors(chain = true)  //支持链式set赋值功能
@AllArgsConstructor      // 自动生成包含全部参数的构造方法
@NoArgsConstructor       //自动生成无参构造方法
// @Document是SpringDataES标记实体类的注解
// indexName指定关联的索引名称，运行时如果item索引不存在，SpringData会自动将他创建出来
@Document(indexName = "item")
public class Item implements Serializable {

    // SpringData标记当前属性为ES的主键
    @Id
    private Long id;
    @Field(type = FieldType.Text,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
    private String title;   // 商品名称

    // Keyword类型是不需要分词的字符串类型
    @Field(type = FieldType.Keyword)
    private String category;  // 商品分类

    @Field(type = FieldType.Keyword)
    private String brand;  // 品牌

    @Field(type = FieldType.Double)
    private Double price;  // 价格

    // 图片地址不会成为搜索条件，所以设置index=false，这样ES就不会为它创建索引库，能够节省空间
    @Field(type = FieldType.Keyword,index = false)
    private String imgPath;  // 图片地址

}
